# Instalar los paquetes necesarios (solo la primera vez)
# install.packages("readxl")
# install.packages("plotly")
# install.packages("dplyr")
library(plotly)
library(readxl)
library(dplyr)
# Especifica la ruta a tu archivo de Excel
ruta_excel <- "C:/Users/uac_facsoc/Desktop/Gráfico_R_MCO.xlsx"
# Carga la hoja de datos. Asegúrate de que los nombres de las columnas
# sean claros (por ejemplo: 'Y', 'X1', 'X2').
datos_regresion <- read_excel(ruta_excel, sheet = 1)
# Mostrar las primeras filas para verificar la carga
head(datos_regresion)
## # A tibble: 6 × 5
## Año n Y X1 X2
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1971 1 40 6 4
## 2 1972 2 44 10 4
## 3 1973 3 46 12 5
## 4 1974 4 48 14 7
## 5 1975 5 52 16 9
## 6 1976 6 58 18 12
# Define tu modelo: Y en función de X1 y X2
modelo_rlm <- lm(Y ~ X1 + X2, data = datos_regresion)
# Ver el resumen del modelo (opcional, pero útil)
summary(modelo_rlm)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = datos_regresion)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.8199 -0.7304 0.1302 0.9173 1.8108
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 31.9807 1.6318 19.598 2.25e-07 ***
## X1 0.6501 0.2502 2.599 0.03550 *
## X2 1.1099 0.2674 4.150 0.00429 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.397 on 7 degrees of freedom
## Multiple R-squared: 0.9916, Adjusted R-squared: 0.9892
## F-statistic: 414.8 on 2 and 7 DF, p-value: 5.356e-08
# 1. Crear rangos basados en los datos reales de tu Excel
range_X1 <- seq(min(datos_regresion$X1), max(datos_regresion$X1), length.out = 30)
range_X2 <- seq(min(datos_regresion$X2), max(datos_regresion$X2), length.out = 30)
# 2. Crear la matriz de predicción usando los nombres de tu modelo (Y ~ X1 + X2)
pred_fun <- function(x1, x2) {
predict(modelo_rlm, newdata = data.frame(X1 = x1, X2 = x2))
}
Z_predicha <- outer(range_X1, range_X2, Vectorize(pred_fun))
# 1. Crear la superficie (Plano)
fig <- plot_ly(
x = ~range_X1,
y = ~range_X2,
z = ~t(Z_predicha),
type = "surface",
opacity = 0.6,
showscale = FALSE,
name = "Plano de Regresión"
)
# 2. Añadir los puntos reales del Excel
fig <- fig %>% add_markers(
data = datos_regresion,
x = ~X1,
y = ~X2,
z = ~Y,
marker = list(
size = 4,
color = '#27ae60',
line = list(color = 'black', width = 1)
),
name = "Datos Reales",
inherit = FALSE
)
# 3. PERSONALIZACIÓN DE NOMBRES (Edita lo que está entre comillas)
fig <- fig %>% layout(
title = "Análisis de Regresión Múltiple: Visualización 3D",
scene = list(
xaxis = list(title = "Inversión en Publicidad ($)"), # Cambia esto por tu X1
yaxis = list(title = "Fuerza de Ventas (Pers.)"), # Cambia esto por tu X2
zaxis = list(title = "Ingresos Totales (Y)") # Cambia esto por tu Y
)
)
# 4. Mostrar el gráfico final
fig
A continuación, se presentan los coeficientes estimados del modelo. Estos valores representan el impacto de cada variable independiente sobre la variable dependiente.
library(stargazer)
stargazer(modelo_rlm,
type = "html",
title = "Tabla 1: Resultados de la Regresión Múltiple",
dep.var.labels = "Ingresos Totales (Y)",
covariate.labels = c("Inversión en Publicidad (X1)", "Fuerza de Ventas (X2)"),
digits = 3)
| Dependent variable: | |
| Ingresos Totales (Y) | |
| Inversión en Publicidad (X1) | 0.650** |
| (0.250) | |
| Fuerza de Ventas (X2) | 1.110*** |
| (0.267) | |
| Constant | 31.981*** |
| (1.632) | |
| Observations | 10 |
| R2 | 0.992 |
| Adjusted R2 | 0.989 |
| Residual Std. Error | 1.397 (df = 7) |
| F Statistic | 414.849*** (df = 2; 7) |
| Note: | p<0.1; p<0.05; p<0.01 |
Utilizando el modelo ajustado, podemos predecir un valor esperado. Por ejemplo, si invertimos 50 en Publicidad y contamos con 30 personas en la Fuerza de Ventas:
Resultado de la Predicción: El valor estimado para la variable dependiente (Y) es de: 97.78.
En este gráfico, las líneas verticales representan el residuo. Los puntos con colores más intensos indican dónde el modelo tiene mayor error de predicción.